package com.ruoyi.iot.domain;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

@Data
public class Device  implements Serializable {

    private static final long serialVersionUID = 1L;
    private Long id;

    @NotBlank(message = "设备名称不能为空")
    private String name;

    private String img;

    private Long createBy;

    private Long groupId;
    /**
     * 唯一标识编号,如果是其他平台，也可以是账号密码
     * 不能纯数字
     */
    private String key;

    private String secret;

    @NotNull(message = "产品ID不能为空")
    private Long productId;

    private String productKey;

    /**
     * ONLINE：设备在线。
     * OFFLINE：设备离线。
     * UNACTIVE：设备未激活。
     * DISABLE：设备已禁用。
     */
    private String status;

    private int nodeType;

    private Date createTime;

    private Date updateTime;

    // 最后一次上报数据时间
    private Date lastDataTime;

    // 最后一次下发命令时间
    private Date lastCommandDate;
    
    /**
     * 经度
     */
    private String longitude;

    /**
     * 纬度
     */
    private String latitude;

    /**
     * 固件版本号
     */
    private String otaVersion;

    /**
     * 设备自身ip地址
     */
    private String ipAddr;

    /**
     * 设备上线后连接的服务ip地址，用于下发命令寻址
     * 设备多以后可能连接到不同节点上
     */
    private String serviceIpAddr;

    /**
     * 上一级设备id
     */
    private Long parentId;

    /**
     * 乐观锁版本号
     */
    private Long  version;

    /**
     * 默认属性列表，查询的是默认通道，该字段不存在数据库
     */
    private List<Property> defaultProperties;

    /**
     * 通道列表，该字段不存在数据库
     */
    private List<Channel> channels;

}